const express = require('express')//express框架
const { Op } = require('sequelize')//nodejs的sequelize模块
const roomType = require('../crud/table/roomType.js')//引入房间类型信息表
const sequelize = require('../crud/config/connect.js')

const roomTypeRouter = express.Router()

roomTypeRouter.post('/add',(req,res) =>{//添加房间类型
    const { type, price, description, url } = req.body;
    console.log(description)
    roomType.findOne({
        where:{
            type
        }
    })
    .then(data =>{
        if(data){
            res.status(200).json({
                success:false,
                msg:'该房型已存在'
            })
            return new Promise(() =>{})
        }else{
            return roomType.create({
                type, price, description, url
            })
        }
    })
    .then(data =>{
        res.status(200).json({
            success:true,
            msg:'房型创建成功！',
            roomType:data.get()
        })
    })
    .catch(err =>{
        res.status(200).json({
            success:false,
            msg:'服务器内部错误！'
        })
    })
})

roomTypeRouter.delete('/del',(req,res) =>{//删除房型
    const { type } = req.body;
    roomType.findOne({
        where:{
            type
        }
    })
    .then(data =>{
        if(data){
            return roomType.destroy({
                where:{
                    type
                }
            })
        }else{
            res.status(200).json({
                success:false,
                msg:'该房型为存在！'
            })
            return new Promise(() =>{})
        }
    })
    .then(data =>{
        res.status(200).json({
            success:true,
            msg:'该房型删除成功！'
        })
    })
    .catch(err =>{
        res.status(200).json({
            success:false,
            msg:'服务器内部错误！'
        })
    })
})

roomTypeRouter.put('/update',(req,res) =>{//修改房型信息
    let { type, price, description, url } = req.body;
    roomType.findOne({
        where:{
            type:{
                [Op.eq]:type
            }
        }
    })
    .then(data =>{
        if(data){
            return roomType.update({
                price, description, url
            },{
                where:{
                    type:{
                        [Op.eq]:type
                    }
                }
            })
        }else{
            res.status(200).json({
                success:false,
                msg:'该房型不存在！'
            })
            return new Promise(() =>{})
        }
    })
    .then(data =>{
        return roomType.findOne({
            where:{
                type
            }
        })
    })
    .then(data =>{
        res.status(200).json({
            success:true,
            msg:'房型信息修改成功！',
            roomType:data.get()
        })
    })
    .catch(err =>{
        res.status(200).json({
            success:false,
            msg:'服务器内部错误！'
        })
    })
})

roomTypeRouter.get('/getAllRoomType',(req,res) =>{//或许所有房型信息
    const { pageSize, offset } = req.query;
    roomType.findAndCountAll({
        // limit:pageSize,
        // offset:offset
    })
    .then(data =>{
        let roomTypeList = data.rows.map(item =>{
            return item.get()
        })
        res.status(200).json({
            success:true,
            msg:'房型信息查询成功！',
            roomTypeList:roomTypeList,
            count:data.count,
            // pageSize:pageSize,
            // offset:offset
        })
    })
    .catch(err =>{
        res.status(200).json({
            success:false,
            msg:'服务器内部错误！'
        })
    })
})

roomTypeRouter.get('/getOneRoomType',(req,res) =>{//查询一中房型的信息
    const { type } = req.query;
    roomType.findAndCountAll({
        where:{
            type:{
                [Op.eq]:type
            }
        }
    })
    .then(data =>{
        res.status(200).json({
            success:true,
            msg:'房型查询成功！',
            roomTypeList:data.rows.map(item =>{
                return item.get()
            }),
            count:data.count
        })
    })
    .catch(err =>{
        res.status(200).json({
            success:false,
            msg:'服务器内部出错！'
        })
    })

})

roomTypeRouter.get('/getAllTypes',(req,res) =>{//查看所有房型
    
    sequelize
        .query('SELECT distinct type FROM roomType', {
            model: roomType,
            mapToModel: true // pass true here if you have any mapped fields
        })
        .then(data => {
            res.status(200).json({
                success:true,
                msg:'房型查询成功！',
                typeList:data.map(item =>{
                    return item.get().type
                })
            })
        })
        .catch(err =>{
            res.status(200).json({
                success:false,
                msg:'内部服务器出错！'
            })
        })
})

module.exports = roomTypeRouter;